package mysql;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import mpo.Dyrektor;
import mpo.Klient;
import mpo.Ksiegowa;
import mpo.Pracownik;
import mpo.User;
import mpo.Zlecenie;

public class Db_Mysql_update {

    public static int uaktualnijUseraWBazie(Connection con, User userDoUaktualnienia) {

        try {
            PreparedStatement ps = con.prepareStatement("Update User set imie=?, nazwisko=?, haslo=?, NIP=?, telefon=?, adres =?, dataWygasnieciaUmowy =?, idZlecenie= ? where pesel=?");

            String pesel = userDoUaktualnienia.getPesel();
            String imie = userDoUaktualnienia.getImie();
            String haslo = userDoUaktualnienia.getHaslo();
            String nazwisko = userDoUaktualnienia.getNazwisko();
            String NIP = userDoUaktualnienia.getNIP();
            String telefon = userDoUaktualnienia.getTelefon();
            String adres = userDoUaktualnienia.getAdres();
            String dataWygasnieciaUmowy = userDoUaktualnienia.getDataWygasnieciaUmowyViaString();
            int idZlecenie = userDoUaktualnienia.getIdZlecenia();

            ps.setString(1, imie);
            ps.setString(2, nazwisko);
            ps.setString(3, haslo);
            ps.setString(4, NIP);
            ps.setString(5, telefon);
            ps.setString(6, adres);
            ps.setString(7, dataWygasnieciaUmowy);
            ps.setInt(8, idZlecenie);
            ps.setString(9, pesel);
            //wszystkie pola usera oprocz pesela

            int i = ps.executeUpdate();
            System.out.println(i + " rekordow zmienionych w tabeli user");

        } catch (Exception e) {
            System.out.println(e);
            return 1; // 1- niepowodzenie
        }
        return 0;
    }

    public static int uaktualnijPracownikaWBazie(Connection con, Pracownik pracownikDoUaktualnienia) {

        User u = new User(pracownikDoUaktualnienia.getPesel(), pracownikDoUaktualnienia.getHaslo(),
                pracownikDoUaktualnienia.getLogin(), pracownikDoUaktualnienia.getImie(), pracownikDoUaktualnienia.getNazwisko(),
                pracownikDoUaktualnienia.getNIP(), pracownikDoUaktualnienia.getTelefon(), pracownikDoUaktualnienia.getAdres(),
                pracownikDoUaktualnienia.getDataWygasnieciaUmowyViaString(), pracownikDoUaktualnienia.getIdZlecenia());

        int kodBledu = uaktualnijUseraWBazie(con, u);
        if (kodBledu != 0) {
            System.out.println("NIE Udal sie update usera");
            return kodBledu;
        }

        try {
            PreparedStatement ps = con.prepareStatement("Update Pracownik set rodzajUmowy=? where pesel=?");

            String pesel = pracownikDoUaktualnienia.getPesel();
            String rodzajUmowy = pracownikDoUaktualnienia.getRodzajUmowy();

            ps.setString(1, rodzajUmowy);
            ps.setString(2, pesel);
            int i = ps.executeUpdate();
            System.out.println(i + " rekordow zmienionych w tabeli pracownik");
        } catch (Exception e) {
            System.out.println(e);
            return 1; // 1- niepowodzenie
        }
        return 0;
    }

    public static int uaktualnijDyrektoraWBazie(Connection con, Dyrektor dyrektorDoUaktualnienia) {

        User u = new User(dyrektorDoUaktualnienia.getPesel(), dyrektorDoUaktualnienia.getHaslo(),
                dyrektorDoUaktualnienia.getLogin(), dyrektorDoUaktualnienia.getImie(), dyrektorDoUaktualnienia.getNazwisko(),
                dyrektorDoUaktualnienia.getNIP(), dyrektorDoUaktualnienia.getTelefon(), dyrektorDoUaktualnienia.getAdres(), dyrektorDoUaktualnienia.getDataWygasnieciaUmowyViaString(), dyrektorDoUaktualnienia.getIdZlecenia());

        int kodBledu = uaktualnijUseraWBazie(con, u);
        if (kodBledu != 0) {
            System.out.println("NIE Udal sie update usera");
            return kodBledu;
        }

        try {
            PreparedStatement ps = con.prepareStatement("Update Dyrektor set stanowisko=?, obowiazki=?, wyksztalcenie=? where pesel=?");

            String pesel = dyrektorDoUaktualnienia.getPesel();
            String stanowisko = dyrektorDoUaktualnienia.getStanowisko();
            String obowiazki = dyrektorDoUaktualnienia.getObowiazki();
            String wyksztalcenie = dyrektorDoUaktualnienia.getWyksztalcenie();

            ps.setString(1, stanowisko);
            ps.setString(2, obowiazki);
            ps.setString(3, wyksztalcenie);
            ps.setString(4, pesel);
            int i = ps.executeUpdate();
            System.out.println(i + " rekordow zmienionych w tabeli dyrektor");

        } catch (Exception e) {
            System.out.println(e);
            return 1; // 1- niepowodzenie
        }
        return 0;  // 0 - wszystko ok
    }

    public static int uaktualnijKsiegowaWBazie(Connection con, Ksiegowa ksiegowaDoUaktualnienia) {

        User u = new User(ksiegowaDoUaktualnienia.getPesel(), ksiegowaDoUaktualnienia.getHaslo(),
                ksiegowaDoUaktualnienia.getLogin(), ksiegowaDoUaktualnienia.getImie(), ksiegowaDoUaktualnienia.getNazwisko(),
                ksiegowaDoUaktualnienia.getNIP(), ksiegowaDoUaktualnienia.getTelefon(), ksiegowaDoUaktualnienia.getAdres(), ksiegowaDoUaktualnienia.getDataWygasnieciaUmowyViaString(), ksiegowaDoUaktualnienia.getIdZlecenia());

        int kodBledu = uaktualnijUseraWBazie(con, u);
        if (kodBledu != 0) {
            System.out.println("NIE Udal sie update usera");
            return kodBledu;
        }

        try {
            PreparedStatement ps = con.prepareStatement("Update Ksiegowa set certyfikat=?, szkolenia=?, uprawnienia=? where pesel=?");

            String pesel = ksiegowaDoUaktualnienia.getPesel();
            String certyfikat = ksiegowaDoUaktualnienia.getCertyfikat();
            String szkolenia = ksiegowaDoUaktualnienia.getSzkolenia();
            String uprawnienia = ksiegowaDoUaktualnienia.getUprawnienia();

            ps.setString(1, certyfikat);
            ps.setString(2, szkolenia);
            ps.setString(3, uprawnienia);
            ps.setString(4, pesel);
            int i = ps.executeUpdate();
            System.out.println(i + " rekordow zmienionych w tabeli ksiegowa");

        } catch (Exception e) {
            System.out.println(e);
            return 1; // 1- niepowodzenie
        }
        return 0;  // 0 - wszystko ok
    }

    public static int uaktualnijKlientaWBazie(Connection con, Klient klientDoUaktualnienia) {

        try {
            PreparedStatement ps = con.prepareStatement("Update Klient set imie=?, nazwisko=?,nazwa=?,miasto=?,telefon=?,typKlienta=? where id=?");

            int id = klientDoUaktualnienia.getId();
            String imie = klientDoUaktualnienia.getImie();
            String nazwisko = klientDoUaktualnienia.getNazwisko();
            String nazwa = klientDoUaktualnienia.getNazwa();
            String miasto = klientDoUaktualnienia.getMiasto();
            String telefon = klientDoUaktualnienia.getTelefon();
            String typKlienta = klientDoUaktualnienia.getTypKlienta();

            ps.setString(1, imie);
            ps.setString(2, nazwisko);
            ps.setString(3, nazwa);
            ps.setString(4, miasto);
            ps.setString(5, telefon);
            ps.setString(6, typKlienta);
            ps.setInt(7, id);
            int i = ps.executeUpdate();
            System.out.println(i + " rekordow zmienionych w tabeli klient");

        } catch (Exception e) {
            System.out.println(e);
            return 1; // 1- niepowodzenie
        }
        return 0;  // 0 - wszystko ok
    }

    static int uaktualnijZlecenieWBazie(Connection con, Zlecenie zlecenieDoUpdatu) {

        try {
            PreparedStatement ps = con.prepareStatement("Update Zlecenie set nazwaZlecenia=?, opis=?, dataRozpoczecia=?, dataZakonczenia=?, doZaplaty=?, pobrano=?, dataPlatnosci=? where id=?");

            int id = zlecenieDoUpdatu.getId();
            String nazwaZlecenia = zlecenieDoUpdatu.getNazwaZlecenia();
            String opis = zlecenieDoUpdatu.getOpis();
            String dataRozpoczecia = zlecenieDoUpdatu.getDataRozpoczeciaViaString();
            String dataZakonczenia = zlecenieDoUpdatu.getDataZakonczeniaViaString();
            BigDecimal doZaplaty = zlecenieDoUpdatu.getDoZaplaty();
            BigDecimal pobrano = zlecenieDoUpdatu.getPobrano();
            String dataPlatnosci = zlecenieDoUpdatu.getDataPlatnosciViaString();
            int idKlient = zlecenieDoUpdatu.getIdKlient();

            ps.setString(1, nazwaZlecenia);
            ps.setString(2, opis);
            ps.setString(3, dataRozpoczecia);
            ps.setString(4, dataZakonczenia);
            ps.setBigDecimal(5, doZaplaty);
            ps.setBigDecimal(6, pobrano);
            ps.setString(7, dataPlatnosci);
            //ps.setInt(8, idKlient);
            ps.setInt(8, id);

            int i = ps.executeUpdate();
            System.out.println(i + " rekordow zmienionych w tabeli Zlecenie");

        } catch (Exception e) {
            System.out.println(e);
            return 1; // 1- niepowodzenie
        }
        return 0;  // 0 - wszystko ok
    }

}
